home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / U-Utilities / (c)u3.d64 / sd copy_all.c (.txt) < prev    next >
Commodore BASIC  |  2007-02-11  |  3KB  |  123 lines

  1. 0 FORI=828 TO894:READA:POKEI,A:NEXTI
  2. 10 DATA162,1,32,198,255,32,228,255,160,0,145,167,230,167,165,167,201,0,208
  3. 20 DATA 2,230,168,166,144,240,235,76,204,255,234,162,1,32,201,255,160,0,177
  4. 30 DATA167,32,210,255,230,167,165,167,201,0,208,2,230,168,165,167,197,169,208
  5. 40 DATA233,165,168,197,170,208,227,76,204,255
  6. 100 POKE 53281,0:POKE 53280,0
  7. 103 POKE 55,0:POKE 56,32
  8. 105 PRINT"[147]SD PROGRAM COPY        D.A.S.
  9. 110 [131]***,SEQ,PRG,USR,REL
  10. 120 [129] J[178]0 [164] 4:[135] T$(J):[130]
  11. 125 [153]"PUT IN SOURCE DISK & PRESS RETURN"
  12. 126 [161] K$:[139] K$[178]""[167] 126
  13. 127 [153]"ON                                      "
  14. 130 D[178]8
  15. 140 [159] 15,D,15,"I0":[134]N$(144),L(144),Y$(144),S(25):CT[178]0:MAX[178]112
  16. 150 [141] 1000
  17. 160 [139] E [167] [144]
  18. 170 [153]"HOLD DOWN 'Y' OR 'N' KEY TO SELECT
  19. 175 PRINT"PROGRAMS TO BE COPIED..."
  20. 180 OPEN 1,D,5,"$0"
  21. 182 FOR L=0 TO 141:GET#1,A$:NEXTL
  22. 190 J=17:GOSUB 1020
  23. 200 NO$=B$:J=2:GOSUB 1020
  24. 210 I$=B$:GET#1,A$:J=2:GOSUB 1020
  25. 220 O$=B$:FOR L=162 TO 248:GET#1,A$:NEXT
  26. 230 PRINT"[145][145][145]NAME: "NO$;"  ID:"I$""
  27. 240 FOR P=1 TO 8
  28. 250 GET#1,T$,A$,A$ :GOSUB 1000
  29. 254 IF T$="" THEN FOR J=1 TO 27:GET#1,A$:NEXT:GOTO340
  30. 255 IF T$<CHR$(128) OR T$>CHR$(133)THEN 360
  31. 290 J= 15:GOSUB 1020
  32. 300 N$=B$
  33. 310 GET#1,A$,A$,A$,A$,A$,A$,A$,A$,A$,L$,H$
  34. 320 L=ASC(L$+CHR$(0))+256*ASC(H$+CHR$(0)):L(CT)=L
  35. 330 Y$(CT)=T$(ASC(T$)-128)
  36. 331 PRINTN$TAB(17)Y$(CT):IF E$<>""THENPRINTTAB(20)"***"E$
  37. 332 GOSUB 1200:IF Y THEN PRINT"[145]                    [145]":GOTO 340
  38. 333 IF L>MAX THEN PRINT"     *** PROGRAM TOO LARGE":GOTO340
  39. 334 N$(CT)=N$:CT=CT+1
  40. 340 IF P<8 THEN GET#1,A$,A$
  41. 350 NEXT P:GET A$:GOTO 240
  42. 360 PRINT"* * * * * * * "
  43. 365 CLOSE 15:CLOSE1
  44. 370 IF CT =0 THEN PRINT"* NO PROGRAMS *":END
  45. 380 INPUT"WANT TO NEW THE DESTINATION DISK   N[157][157][157]";Z$
  46. 385 OPEN 15,D,15
  47. 390 IF Z$="N"THEN GOSUB 1060:GOTO440
  48. 400 GOSUB 1060
  49. 410 PRINT"[145]                                      "
  50. 413 INPUT"[145]DISK NAME,ID";ND$,NI$
  51. 420 PRINT#15,"N0:"+ND$+","+NI$
  52. 430 GOSUB 1000
  53. 440 PRINT#15,"I0"
  54. 445 PRINT"[145]                                      "
  55. 450 GOSUB 1000
  56. 460 OPEN1,D,0,"$0:!#$%&"
  57. 470 GET#1,A$,A$,A$,A$,A$,A$,A$,A$
  58. 480 GET#1,A$:IF A$<>""THEN 480
  59. 490 GET #1,A$,A$,A$:X=ASC(A$+CHR$(0)):GET#1,A$:Y=ASC(A$+CHR$(0))
  60. 500 PRINT"[145]                                      "
  61. 510 PRINT"[145]("X+Y*256"BLOCKS FREE)"
  62. 520 CLOSE1:C=0:FOR I= 1 TO 800:NEXTI
  63. 530 PRINT"[145]                              ":C=0:LT=0
  64. 540 GOSUB 1120
  65. 550 S=0:P=0:N=0:POKE 167,0:POKE 168,32
  66. 560 IF S+L(LT)>MAX THEN 595
  67. 570 S=S+L(LT):P=P+1:LT=LT+1
  68. 580 IF LT=CT THEN  595
  69. 590 GOTO 560
  70. 595 C=LT-P:X=P
  71. 600 PRINT"READING: "N$(C)
  72. 610 OPEN 1,8,8,"0:"+N$(C)+","+Y$(C)+",R"
  73. 615 GOSUB 1000:IF E <> 0THEN PRINT"   ***"E$:GOTO630
  74. 620 SYS 828
  75. 626 S(N)=(PEEK(168)*256)+PEEK(167)
  76. 630 CLOSE1
  77. 640 C=C+1:N=N+1:X=X-1:IF X=0 THEN 660
  78. 650 GOTO 600
  79. 660 POKE 167,0:POKE 168,32:N=0:PRINT:GOSUB 1060
  80. 670 PRINT"WRITING: "N$(C-P)
  81. 680 OPEN 1,8,8,"0:"+N$(C-P)+","+Y$(C-P)+",W"
  82. 690 GOSUB 1000:IF E <> 0 THEN PRINT"   ***"E$:GOTO710
  83. 695 H=INT(S(N)/256):L=S(N)-(H*256)
  84. 696 POKE 169,L:POKE 170,H
  85. 700 SYS 858
  86. 710 CLOSE1
  87. 715 N=N+1:P=P-1:IF P=0 THEN 730
  88. 720 GOTO670
  89. 730 IF C=CT THEN 750
  90. 740 PRINT:GOTO 540
  91. 750 GOSUB1230
  92. 760 IFAN$="Y"THENRUN
  93. 770 POKE 56,160:END
  94. 1000 INPUT#15,E,E$,E1,E2:IF E=0 THENE$=""
  95. 1010 RETURN
  96. 1020 B$=""
  97. 1030 FOR L= 0 TO J
  98. 1040 GET#1,A$:IF A$<>CHR$(96)THEN IF A$<> CHR$(160) THEN B$=B$+A$
  99. 1050 NEXTL:RETURN
  100. 1060 PRINT"[145]PUT IN DESTINATION DISK & PRESS RETURN"
  101. 1065 GET A$:IF A$=""THEN 1065
  102. 1070 GOSUB 1090
  103. 1075 IF E THEN PRINT"[145]                                      ":GOTO1060
  104. 1080 RETURN
  105. 1090 OPEN 2,D,15,"I0":OPEN 1,D,5,"$0":FORI= 1 TO 142:GET#1,A$:NEXT
  106. 1100 J=17:GOSUB 1020:NN$=B$:E=0:IF NN$=NO$THEN E=1
  107. 1110 CLOSE1:CLOSE2:RETURN
  108. 1120 PRINT"[145]PUT IN SOURCE DISK & PRESS RETURN[146]"
  109. 1130 GET A$:IF A$=""THEN 1130
  110. 1140 GOSUB 1170
  111. 1150 IF E THEN PRINT"[145]                                      ":GOTO 1120
  112. 1160 RETURN
  113. 1170 OPEN 2,D,15,"I0":OPEN 1,D,5,"$0":FOR I=1 TO 142:GET#1,A$:NEXT
  114. 1180 J=17:GOSUB 1020:E= 1:IF NO$=B$THEN E=0
  115. 1190 CLOSE1:CLOSE2:RETURN
  116. 1200 POKE 650,128:GET A$:IF A$=""THEN 1200
  117. 1205 POKE 650,0
  118. 1210 Y=1:IF A$ ="Y" THEN Y=0
  119. 1220 RETURN
  120. 1230 INPUT"ANOTHER INPUT DISK";AN$
  121. 1240 IF LEFT$(AN$,1)<>"N"THEN AN$="Y"
  122. 1250 RETURN
  123.